﻿using System;

namespace CSConsoleTest
{
    class ConsoleTestMain
    {
        static void Main(string[] args)
        {
            BaseConsoleTest[] consoleTestList = new BaseConsoleTest[] { 
                new TestConvertDataTypes(), //Conversion between datatypes
                new TestNullable(), //Nullable
                new TestWeakTypeVariable(), //Weak type
                new TestCTS(), //Common type system
                new TestFormatting(), //Formatting
                new TestCallByRef(), //Call by reference
                new TestOutParam(), //Output parameters
                new TestVariableLengthParam(), //Variable length parameters
                new TestNamedParam(), //Named parameters
                new TestAnonymousType(), //Anonymous type
                new TestRankTwoArray(), //Rank-2 array
                new TestJaggedArray(), //Jagged array
                new TestClassBasic(), //Class basics
                new TestMethodExtension(), //Method extension
                new TestStructure(), //Structure
                new TestInterface(), //Interface
                new TestCollection(), //Collection
                new TestIndexer(), //Indexer, Enumerator
                new TestIndexerGeneric(), //Generic Indexer, Enumerator
                new TestGenericBasic(), //Generic basic
                new TestCollectionGeneric(), //Generic collection
                new TestDelegate(), //Delegate
                new TestAnonymousMethod(), //Anonymous method
                new TestEvent(), //Event
                new TestLambda(), //Lambda
                new TestExpression(), //Expression
                new TestLinQ(), //LinQ
                new TestReflection(), //Reflection
                new TestAttribute(), //Attributes
                new TestCOM(), //COM (Component Object Model)
                new TestDLR(), //DLR (dynamic language runtime)
                new TestFile(), //File I/O
                new TestSerialize(), //Serialize
                new TestThread(), //Thread
                new TestTask(), //Task
                new TestParallel(), //Parallel
                new TestForm(), //Forms
            };

            //Run tests
            foreach (BaseConsoleTest test in consoleTestList)
            {
                test.printDescription();
                test.doTest();
            }

            //read input for waiting result
            Console.WriteLine("press any key to exit");
            Console.ReadKey();
        }

    }
}